package com.itheima.ood.polymorphic.demo01;

public class FuDemo01 {

    public static void main(String[] args) {

        // 父类的引用指向子类的对象
        Fu fu = new Zi();

        /**
         * 成员变量的访问特点： 编译看左边，如果=号的左边存在这个成员变量，那么编译通过，如果=号左边没有这个成员变量，编译就失败 ;
         *                   运行看左边， 直接使用的是=好左边类型对应的成员变量
         *
         * 成员方法的访问特点:  编译看左边, 如果=号的左边存在这个成员方法，那么编译通过，如果=号左边没有这个成员方法，编译就失败 ;
         *                   运行看右边
         */
        System.out.println(fu.a);

        // 多态的形式去访问function的方法
//        fu.function();
//        fu.show();

        fu.method();

        System.out.println("---------------------------------------------------");

        fu.method2();

        /**
         * 多态是一种动态绑定机制，在编译的时候，参考的是父类中的成员方法，但是在运行的时候运行的是子类的成员方法，在运行的时候会动态
         * 绑定到子类方法上进行执行 ； 如果说我们这个方法是一个静态方法(static)方法，那么还存在这种动态绑定机制吗？会存在动态绑定机制了
         * 静态把这个动态绑定机制打乱了;
         */
    }

}
